home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 676-700 / 683 / le-nag / 2.0 / le-nag.txt < prev    next >
Text File  |  1995-03-18  |  23KB  |  465 lines

  1. LE-NAG:
  2.      LeverEdge NAG is a program to remind you of events before you
  3.      miss them.  Events can be scheduled to occur once or repeat
  4.      daily,weekly,monthly or yearly.  You can be alerted of the
  5.      event in a number of ways from a screen flash to a message
  6.      requester.
  7.  
  8.      ** The reqtools.library is not required but is recommended. **
  9.  
  10.      Shareware, binary only.
  11.      Author: Craig M. Lever
  12.  
  13. Disclaimer:
  14.      I will do my best to fix bugs as they appear and/or improve the
  15.      program but I won't be held responsible for what is outside my
  16.      control:
  17.  
  18.      I make no warrantee to the usefulness of this program nor can I
  19.      be held responsible for any damage caused while using it.
  20.  
  21. Distribution:
  22.      LeverEdge NAG is copywrite 1992 by Craig Lever, All Right
  23.      Reserved.  This program can be distributed free of charge
  24.      electronically or via disk collections.
  25.  
  26.      This program is shareware so if you feel inclined, send a
  27.      contribution to the address below.  I suggest $5 but feel free to
  28.      send me any amount.  I'll accept US & Can currency money orders or
  29.      cheques drawn from a Canadian bank.  I'm even interested in
  30.      collecting samples of foreign currency so if you don't want to go
  31.      through the hassle of getting a money order and don't mind the
  32.      risks of sending currency via mail then go for it.  The postal
  33.      service may frown on you sending coins so I don't recommend that.
  34.  
  35.      This shareware version has a couple of things added to encourage
  36.      contributions.  First it has two internal events, one alerts you
  37.      with a requester which can be acknowledged immediately so it will
  38.      only come up once and another which flashes the screen with a
  39.      DisplayBeep every half hour.  Also the AmigaDOS execute alert
  40.      will prompt you with a requester so you can confirm or abort the
  41.      command.
  42.      
  43.      If you do send $5 Cdn. or more (and it is enough to cover the cost
  44.      of a disk and postage) I'll send you the latest version with the
  45.      shareware notices and the requester for the AmigaDOS execute alert
  46.      removed.
  47.  
  48. Reaching me:
  49.      I can be reached at the following mailing address:
  50.           Craig Lever
  51.           RR #1.
  52.           Airdrie, Alberta, Canada.
  53.           T4B 2A3
  54.  
  55.      I can also be reached through some of the Fido Amiga echoes
  56.      or by Fido Netmail at:
  57.           Craig Lever @ 1:134/27.0 - The AMUC Express
  58.      or by UseNet Netmail at:
  59.           cmlever@wwshop.cuc.ab.ca - The Wizard's Workshop
  60.  
  61. Instructions:
  62.  A)  Startup
  63.  
  64.      The program can be started from the workbench by clicking on its
  65.      icon or from the CLI.
  66.  
  67.      The format from the CLI is:
  68.           LE_NAG [-t #] [-l #] [-h #] [-w #] [-m #] [-s #] [-d #] [-q #]
  69.                -t sets the top edge of where the window opens
  70.                -l sets the left edge of where the window opens
  71.                -h sets the height of the window (0 = minimum)
  72.                -w sets the width of the window  (0 = minimum)
  73.                -m sets the check minutes value  (explained later)
  74.                -s turns on or off Day Schedule  (0 = off, 1 = on)
  75.                -d display a quick summary of the events for a # of days      
  76.                -q quit immediately (0 = no, 1 = yes)
  77.              nags once for the current time and closes down
  78.                where # is an integer
  79.  
  80.      Therefore, the CLI input format allows you to configure the
  81.      program a little more.  As well, it lets you set where its
  82.      console is located if you run it with a script executed by
  83.      NewShell or IconX (See your manuals for more info on this).
  84.  
  85.      If you wish to put LE-Nag in your startup sequence I recommend
  86.      one of the following.
  87.  
  88.      If you aren't planning on using alerts which print to the
  89.      console:
  90.           cd <LE-Nag directory>
  91.           run >nil: <nil: le-nag [arguements]
  92.      If you do want console output:
  93.           NewCLI con:280/10/360/60/LE-Nag s:Le-Nag.script
  94.      and s:Le-Nag.script would be:
  95.           cd <LE-Nag directory>
  96.           le-nag [arguements]
  97.  
  98.      When the program runs it will open a window on the workbench
  99.      screen.  For those of you without the benefit of WB 2.0's window
  100.      sizing gadgets you can use the right mouse button to minimize and
  101.      maximize the window.
  102.  
  103.  
  104.  B)  Features
  105.  
  106.      The window is divided into a couple of regions of related
  107.      gadgets described below.
  108.  
  109.      - Calendar
  110.  
  111.      The top left region is called the Calendar and includes gadgets
  112.      to change the displayed year, month, day, hour and minute.  The
  113.      calendar is used to enter times for events as well as setting a
  114.      time used by other functions to test how events respond at a
  115.      given time, to view a given day's events or to move to events
  116.      scheduled for a given day.
  117.  
  118.      - Day Schedule
  119.  
  120.      To the right of this is the Day Schedule gadget.  If this gadget
  121.      is selected it shows what times during the calendar day have
  122.      events scheduled as well as highlighting days on the calendar
  123.      where events with the Highlight Day alert occur.  Turning it on
  124.      will slow down the response when changing the Calendar day, month
  125.      or year since the events list must be rescanned.  For this reason,
  126.      it can be toggled on and off with a mouse click.
  127.  
  128.      - Event Information Area
  129.  
  130.      The bottom of the window is the Event Information area.
  131.  
  132.      At the top of this area is the Event string gadget
  133.      where the event can be described with up to 80 characters.
  134.  
  135.      Below this is the Execute type gadget and the Execute string
  136.      gadget.  The Execute gadget cycles through the types of alerts
  137.      events can generate, they include:
  138.          Print:          Outputs to the console window.
  139.          DisplayBeep:    Flashes the screen with DisplayBeep().
  140.          AmigaDOS:       Executes and AmigaDOS command in C: or
  141.                          the current directory.
  142.                          Since the AmigaDOS execute is very powerful
  143.                          and potentially dangerous, the shareware
  144.                          version requires the reqtools.library to
  145.                          function and puts up a requester to verify
  146.                          the AmigaDOS command.
  147.          Requester:      Opens a requester on the Workbench.
  148.                          The requester is more flexible than any
  149.                          other method of alert since it gives you
  150.                          three choices of response:
  151.                               Acknowledge
  152.                               Acknowledge and then Save Events file
  153.                               Get Out of My Face
  154.                          Where GOMF just gets rid of the requester,
  155.                          Acknowledge adjusts the acknowledge time
  156.                          which is discussed later.  But basically an
  157.                          acknowledged event won't come up again until
  158.                          after the current eventtime passes.     
  159.                          (or never again if the event does not repeat)
  160.                          ** Requires the reqtools.library **
  161.          SPEAK:          Talks using the AmigaDOS SPEAK: device which
  162.                          has to be installed with MOUNT SPEAK:
  163.                          SPEAK: requires the translator.library
  164.                          and narrator.device in libs: and devs:
  165.                          The AmigaDOS 2.0 & 1.3 manuals both describe
  166.                          the options for changing the qualities of
  167.                          the voice. (See speak-handler)          
  168.                          And example on how to use options would be:
  169.                          " \nopt/p300/r\Hello.\nopt/s100/p100/n\nBye."
  170.                          Which would say "hello" with a high pitch
  171.                          robotic voice and then "bye" in a slower,
  172.                          lower and less robotic (normal) voice.
  173.           Note:  SPEAK: does not return an error
  174.                          message if it can't open its sound channel.
  175.                          If it can't the output will just disappears.
  176.          Play Sound:     Plays up to 4 IFF sound file simultaneously.
  177.                          If an voice is unavailable the sound    
  178.                          will not be played.  Also only the first
  179.                          128K (131072 bytes) will be played if the
  180.                          sample is longer.
  181.          Highlight Day:  This is a special event that changes the
  182.                          color of the day on the calendar.  It is
  183.                          special in two ways.  First, it is only in
  184.                          effect if the Day Schedule gadget is
  185.                          selected.  And second, it is not affected by
  186.                          the acknowledge time.
  187.  
  188.      The Execute string (up to 80 characters long) is used to provide
  189.      information to be used in the alert, ie what is printed if Print
  190.      is the Execute type, what is executed if the Execute type is
  191.      AmigaDOS.
  192.      There are some escape sequences supported when this string is
  193.      expanded, these are:
  194.           \t - expanded to a tab
  195.           \n - expanded to a carriage return & line feed
  196.           \r - expanded to a carriage return
  197.           \\ - used to indicate a single \
  198.      \n and \r can be used to seperate commands for the AmigaDOS
  199.      alert and to seperate IFF sound files for the Play Sound alert.
  200.  
  201.      In addition to the escape sequences there are some conversion
  202.      sequences which allow you to include information about the event
  203.      and the time when the alert occurred, these are:
  204.           %eX or %EX for info on the event time
  205.           %cX or %CX for info on the current time
  206.           %aX or %AX for info on the last acknowledge time
  207.           %lY or %LY for info on the length
  208.           %dY or %DY for info on the diff. between event & current time
  209.           %s  or %S  for the event text
  210.           %%  used to indicate a single %
  211.  
  212.           and X can be the folowing:
  213.                c - century integer     ie 19
  214.                C - century text        ie Nineteen
  215.                y - year integer        ie 92
  216.                Y - year text           ie NinetyTwo
  217.                m - month integer       ie 2
  218.                M - month text          ie February
  219.                w - weekday             ie 4        (Sunday is 0)
  220.                W - weekday text        ie Thursday
  221.                d - day integer         ie 4
  222.                D - day text            ie Fourth
  223.                h - 12 hour integer     ie 5
  224.                H - 12 hour text        ie Five
  225.                i - 24 hour integer     ie 17
  226.                I - 24 hour text        ie Seventeen
  227.                p or P - AM/PM phase    ie PM
  228.                n - minutes integer     ie 15
  229.                N - minutes text        ie Fifteen
  230.                s or S - seconds        ie 4030030303
  231.           and Y can be the folowing:
  232.                d - days integer        ie 493
  233.                D - days text           ie NintyThree
  234.                     note: the text only shows two digits of the integer
  235.                h - hours integer       ie 6
  236.                H - hours text          ie Six
  237.                n - minutes integer     ie 15
  238.                N - minutes text        ie Fifteen
  239.                s or S - seconds        ie 4030030303
  240.  
  241.           If X or Y isn't in the list then the default is to print the
  242.           seconds count.
  243.  
  244.           The % conversions can even use formatting information like
  245.           field sizing and left right justification which C programmers
  246.           are probably familiar with.  For those unfamiliar with these,
  247.           here  is the format:
  248.                %[flags][width][.precision]type
  249.  
  250.                where:
  251.                     type is the sequences described above
  252.                     flags can be -,+,# or <space>.  The most useful is
  253.                          - which will left justified the number or text.
  254.                     width is an integer specifying the minimum width
  255.                          a leading zero causes numbers to be printed
  256.                          with leading zeroes, ie 02
  257.                     precision is an integer.  For text it specifies
  258.                          the maximum # of character to display.
  259.                          For numbers it works the same as width with
  260.                          a leading zero.
  261.      If the Execute string is empty then the Event string will be
  262.      used in its place.
  263.  
  264.      Below the execute gadgets are a number of time gadgets which
  265.      are set by selecting the time gadget and moving the Calendar
  266.      gadgets to change its contents.
  267.      Once the value is correct the gadget can be clicked again to
  268.      unselect it or it is also unselected if another time gadget is
  269.      selected.  The changes can also be cancelled with the Cancel
  270.      gadget if the time gadget is still selected.
  271.      There are two different types of time gadgets, some are absolute
  272.      time gadgets which are tied to a date and some are relative time
  273.      gadgets which measure an interval of time of some length.
  274.      Here is a description of what each time gadget means:
  275.           Event Time     - start time of the event or start time of
  276.                            the first event if it repeats.  Absolute.
  277.           Length         - length of the event. Relative, it is set
  278.                            by moving the calendar to the end time of
  279.                            the first event.
  280.           Advance Notice - period of time before the event occurs
  281.                            when it will generate alerts.  Relative.
  282.           Interval       - controls how many times the alert will
  283.                            occur between the advance notice and the
  284.                            event time.  It sets how many minutes
  285.                            are between alerts.  Relative.
  286.           Acknowledge    - is the time this event was acknowledged.
  287.                            If the next event time after the
  288.                            acknowledge time is the same as the next
  289.                            event time when the program is nagging
  290.                            then no alert is generated.  Absolute.
  291.  
  292.      There is one more gadget in the area called Group.  This is a 4
  293.      digit ASCII code you can assign to an event.  This allows you to
  294.      link serval related events together.  If one gadget is
  295.      acknowledged then all of the others will also have their
  296.      acknowledge time updated.  For example perhaps you can watch the
  297.      same TV program at 2 different times, if you see it the first
  298.      time and acknowledge then you won't be alerted of the other time
  299.      it is on.
  300.      There is one exception, if group code is blank then these events
  301.      are treated as ungrouped and acknowledging them does not effect
  302.      all other gadgets that have a blank group.
  303.      To the right of the time gadgets are the flags used to determine
  304.      how the event will occur or repeat.
  305.      Yearly Monthly and Weekly are used with the Repeat gadget value
  306.      to determine when to event can occur if it repeats.
  307.      The repeat gadget indicates the interval of weeks, months or
  308.      years between events.  If Weekly is set it is the number of
  309.      weeks, if Monthly is set (and Weekly isn't) then it is the number
  310.      of months, if Yearly is set (and neither Weekly or Monthly are)
  311.      then is is the number of years.
  312.      If Weekly is set then the Monthly and Yearly gadgets indicate
  313.      if the event can occur on a month or year not equal to that of
  314.      the original event time.
  315.      Similarly if Weekly isn't set and Monthly is then Yearly
  316.      indicates if the repeating event can occur in months outside the
  317.      year of the original event time.
  318.      This approach allows you to set up events which repeat but stop
  319.      when the month or year ends.
  320.  
  321.      Below the Yearly gadget is a gadget called D= and one for each
  322.      day of the week.  The D= stands for Day Equals and means the
  323.      event time must be one of the days set in the weekday gadgets.
  324.      The most obvious use of this is to produce an event for Friday
  325.      the 13th if your the superstitious type (or Tuesday the 12th if
  326.      your worried about Friday the 13th viri)
  327.      If the Day Equals gadget is not set and some of the weekday ones
  328.      are then the whole week after the event time is checked and any
  329.      days where the weekday gadget is set treated as events.
  330.      This has two uses for me,  First to make events that repeat daily
  331.      by making events that repeat weekly and setting all the weekday
  332.      gadgets on.  And also to make events that occur on a particular
  333.      day of the week in a particular week of every month, like my AMUC
  334.      User's group meeting on the 3rd Wed of every month.  To set it up
  335.      I just picked a month for the event to start, select the 15th of
  336.      that month (the 3rd week can start no earlier than the 15th) and
  337.      set the repeat count to 1, and turned on Yearly, Monthly. Weekly
  338.      and Wednesday.
  339.      There are two other flag gadget used to automate some options
  340.      which can be performed after the alert occurs.  The first is
  341.      Auto Ack or Auto Acknowledge and causes an acknowledge to occur
  342.      after the event is processed.  It is useful if your not using the
  343.      Requester alert where you can manually acknowledge.  What
  344.      acknowledging does is prevent the event from occurring again
  345.      until the time is past the event time which already generated
  346.      an alert.  The other is AutoSave which saves the Events file
  347.      after the alert occurs.  It is most useful when combined with
  348.      Auto Ack so the change in the Acknowledge time is stored.
  349.      
  350.      Note the above description of acknowledging is a little week so
  351.      here is a little more correct (but confusing) description.
  352.      If the event does merit an alert the next thing that is done
  353.      is the Acknowledge time is checked to see if it is related
  354.      to the same event time as that which created the new alert and
  355.      if it is the alert does not occur.
  356.      
  357.      - System Time
  358.  
  359.      In the upper right of the window there is a gadget displaying the
  360.      current time.  It can be set the same as any time gadget by
  361.      selecting it and changing the calendar and then unselecting it.
  362.  
  363.      - Check Minutes
  364.  
  365.      Below System Time is the Check Minutes gadget.  This determines
  366.      how often the program checks to see if any events occur.  Note
  367.      this is not quite like the interval time gadget as it effects all
  368.      events.  With larger Check Minutes values there is also a bit
  369.      greater risk of events being missed if something happens to the
  370.      clock but it also reduces how often the program need the CPU.
  371.  
  372.      - Control Panel
  373.  
  374.      Below Check Minutes is a group of gadgets I call the Control Panel.
  375.  
  376.      Next and Previous move from one event to the next.
  377.  
  378.      Delete removes the currently displayed event.
  379.           Note:  Currently deleted events are NOT recoverable.
  380.  
  381.      The New gadget is for creating a new blank event.
  382.  
  383.      Cancel has two functions, if a time gadget is selected it undoes
  384.      the changes you have made to that time gadget. Otherwise it swaps
  385.      the current event's information with an undo event.  This undo
  386.      event is initially set to the information in the event when you
  387.      first moved to it with Next/Previous.  If it is a new event then
  388.      it equals the contents of the current event just before you
  389.      create the new event. This is useful for making events which
  390.      contain much of the same information, just enter the similar 
  391.      information and hit New then Cancel.
  392.  
  393.      Next to Cancel is Save which saves the events to the file .Events
  394.      in the current directory.  As an additional note .Event files can
  395.      be joined together with JOIN (or TYPE) as .Event files are just a
  396.      list of Events without any header or footer information.
  397.  
  398.      The next gadget is the Edit Mode gadget which effects the
  399.      functions of Next/Previous and to a lesser extent, Delete and
  400.      New.  It has three settings:
  401.           Edit All   - Next and Previous simply move from the
  402.                        current event to one immediately adjacent to it.
  403.           Edit Day   - Next and Previous try to move to the
  404.                        next/previous event which occurs on the day
  405.                        shown in the Calendar area.  Delete will also
  406.                        try to move to an event occurring on the
  407.                        Calendar day but if it can't it will move to an
  408.                        adjacent event.
  409.           Edit Group - Next/Previous will only move to an event which
  410.                        has the same group as the current event.  Delete
  411.                        will try the same but if one doesn't exist it
  412.                        will go to an adjacent Event.  New will also put
  413.                        the Group of the current event into the new
  414.                        event's Group.
  415.  
  416.      The last gadget is Goto and it is used with time gadgets to move
  417.      the Calendar to the time values shown in them.  First Goto is
  418.      selected and then a time gadget is selected.  Goto is cancelled
  419.      if Goto,Cancel or something other than a time gadget is selected.
  420.      Selecting absolute time gadgets after Goto will move to the time
  421.      shown in them whereas relative time gadgets will move the Calendar
  422.      to a position relative to the event time.  Interval, and Advance
  423.      Notice move to before the event time and Length moves to after the
  424.      event time, ie at the event end time.
  425.  
  426.      Thanks you for taking the time to look at these rather long docs.
  427.      I hope it helps more than it hurts as you try to understand
  428.      LE-NAG.
  429.  
  430.      This program has been tested with an 6M A3000 under 1.3 and 2.0,
  431.      a 1M A500 under 1.3 and a 256K A1000 under 1.3 (WB loaded).
  432.  
  433. Many Thanks go to:
  434.      Bryce McCormick, my alpha/beta/gamma tester, who directly and
  435.      indirectly inspired changes to the program and made it more
  436.      difficult for me to shelf for any great length of time.
  437.  
  438.      Stephen Vermuelen, what can I say, if there is a Amiga
  439.      programming question that he doesn't know the answer to I haven't
  440.      had to ask it yet.
  441.  
  442.      Bob Leivian who ported the calendar program found on Fish 34.
  443.      It served its purpose as this program was being written and was a
  444.      good model for this program.
  445.  
  446.      Anders Bjerin who's Amiga C Manual continues to be the source of
  447.      the underlying interface monitoring code in anything I start.
  448.      Thanks also for the EasySound IFF 8SVX player.
  449.  
  450.      Timm Martin who's timer device code cut down considerably the
  451.      time necessary to get this program functional even if I did have
  452.      to work the code over a bit.
  453.  
  454.      Leo Schwab who's process spawning code made this program
  455.      multitask internally where it needed it most.
  456.  
  457.      Nico Francois who's ReqTools library made nagging with good 
  458.      looking requesters only a function call away.
  459.  
  460.      And ofcourse Fred Fish for providing a reliable first source for
  461.      the PD programs and the source code of programmers like those
  462.      mentioned above.
  463.  
  464. ReqTools is Copyright (c) Nico Francois
  465.